<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IgH EtherCAT Master: debug.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">IgH EtherCAT Master
   &#160;<span id="projectnumber">1.5.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('debug_8c_source.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">debug.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="debug_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/******************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *  $Id: debug.c,v ec403cf308eb 2013/02/12 14:46:43 fp $</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Copyright (C) 2006-2008  Florian Pose, Ingenieurgemeinschaft IgH</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *  This file is part of the IgH EtherCAT Master.</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *  The IgH EtherCAT Master is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *  modify it under the terms of the GNU General Public License version 2, as</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *  published by the Free Software Foundation.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *  The IgH EtherCAT Master is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *  Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *  You should have received a copy of the GNU General Public License along</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *  with the IgH EtherCAT Master; if not, write to the Free Software</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *  ---</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  The license mentioned above concerns the source code only. Using the</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  EtherCAT technology and brand is only permitted in compliance with the</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  industrial property and similar rights of Beckhoff Automation GmbH.</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;linux/version.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;linux/netdevice.h&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;linux/etherdevice.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="globals_8h.html">globals.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="master_8h.html">master.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="debug_8h.html">debug.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">// net_device functions</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a11a1c64e15248046846431990839c0f4">ec_dbgdev_open</a>(<span class="keyword">struct</span> net_device *);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">ec_dbgdev_stop</a>(<span class="keyword">struct</span> net_device *);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">ec_dbgdev_tx</a>(<span class="keyword">struct</span> sk_buff *, <span class="keyword">struct</span> net_device *);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">struct </span>net_device_stats *<a class="code" href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">ec_dbgdev_stats</a>(<span class="keyword">struct</span> net_device *);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2, 6, 31)</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="debug_8c.html#a1049a945f6a46b9a8a8ab4684958d59f">   56</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span>net_device_ops <a class="code" href="debug_8c.html#a1049a945f6a46b9a8a8ab4684958d59f">ec_dbg_netdev_ops</a> =</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    .ndo_open = <a class="code" href="debug_8c.html#a11a1c64e15248046846431990839c0f4">ec_dbgdev_open</a>,</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    .ndo_stop = <a class="code" href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">ec_dbgdev_stop</a>,</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    .ndo_start_xmit = <a class="code" href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">ec_dbgdev_tx</a>,</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    .ndo_get_stats = <a class="code" href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">ec_dbgdev_stats</a>,</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;};</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="debug_8h.html#aa8debb37c58f6813ddefa8233095f496">   74</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#ab4a40ce6bb6a66bd034790c3a7985c80">ec_debug_init</a>(</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg, </div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <a class="code" href="structec__device.html">ec_device_t</a> *device, </div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *name </div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        )</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#ab18ba1d3de75e73ab1d89315240b615d">device</a> = device;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#afcecd6a1efb040b7b9740d6c0c48f497">registered</a> = 0;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">opened</a> = 0;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    memset(&amp;dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> net_device_stats));</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <span class="keywordflow">if</span> (!(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a> =</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;          alloc_netdev(<span class="keyword">sizeof</span>(<a class="code" href="structec__debug__t.html">ec_debug_t</a> *), name, ether_setup))) {</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        <a class="code" href="master_8h.html#aece1fb7ea6af168ba7513c9d7b0a523a">EC_MASTER_ERR</a>(device-&gt;<a class="code" href="structec__device.html#a3678edcc317d6324936b02c4509de443">master</a>, <span class="stringliteral">&quot;Unable to allocate net_device&quot;</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                <span class="stringliteral">&quot; for debug object!\n&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="keywordflow">return</span> -ENODEV;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="comment">// initialize net_device</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2, 6, 31)</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;netdev_ops = &amp;<a class="code" href="debug_8c.html#a1049a945f6a46b9a8a8ab4684958d59f">ec_dbg_netdev_ops</a>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;open = <a class="code" href="debug_8c.html#a11a1c64e15248046846431990839c0f4">ec_dbgdev_open</a>;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;stop = <a class="code" href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">ec_dbgdev_stop</a>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;hard_start_xmit = <a class="code" href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">ec_dbgdev_tx</a>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;get_stats = <a class="code" href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">ec_dbgdev_stats</a>;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// initialize private data</span></div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    *((<a class="code" href="structec__debug__t.html">ec_debug_t</a> **) netdev_priv(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>)) = dbg;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="debug_8h.html#aaf7590df1f37cbc094a03b6dd339a007">  115</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="debug_8c.html#a1711152b73dc97bc81a9e9aae4b8a263">ec_debug_clear</a>(</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg </div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        )</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <a class="code" href="debug_8c.html#a488b3c97e9786a33f2372180de561591">ec_debug_unregister</a>(dbg);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    free_netdev(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="debug_8h.html#a1d9b504f3765f22ec81c6e332f542add">  127</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="debug_8c.html#a683a1dd06041ed934990c736ab3267a9">ec_debug_register</a>(</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg, </div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="keyword">const</span> <span class="keyword">struct</span> net_device *net_dev </div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        )</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <a class="code" href="debug_8c.html#a488b3c97e9786a33f2372180de561591">ec_debug_unregister</a>(dbg);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="comment">// use the Ethernet address of the physical device for the debug device</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    memcpy(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>-&gt;dev_addr, net_dev-&gt;dev_addr, ETH_ALEN);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">// connect the net_device to the kernel</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="keywordflow">if</span> ((result = register_netdev(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>))) {</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <a class="code" href="master_8h.html#af75617c47fe87f4f60e8593d7e79dbc0">EC_MASTER_WARN</a>(dbg-&gt;<a class="code" href="structec__debug__t.html#ab18ba1d3de75e73ab1d89315240b615d">device</a>-&gt;<a class="code" href="structec__device.html#a3678edcc317d6324936b02c4509de443">master</a>, <span class="stringliteral">&quot;Unable to register net_device:&quot;</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                <span class="stringliteral">&quot; error %i\n&quot;</span>, result);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        dbg-&gt;<a class="code" href="structec__debug__t.html#afcecd6a1efb040b7b9740d6c0c48f497">registered</a> = 1;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;}</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="debug_8h.html#aed729c6112e274fb57539f57f0101c59">  152</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="debug_8c.html#a488b3c97e9786a33f2372180de561591">ec_debug_unregister</a>(</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg </div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        )</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordflow">if</span> (dbg-&gt;<a class="code" href="structec__debug__t.html#afcecd6a1efb040b7b9740d6c0c48f497">registered</a>) {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        dbg-&gt;<a class="code" href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">opened</a> = 0;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        dbg-&gt;<a class="code" href="structec__debug__t.html#afcecd6a1efb040b7b9740d6c0c48f497">registered</a> = 0;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        unregister_netdev(dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    }</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;}</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="debug_8h.html#a69e2cddd7db5ff1ac8b3e1896e7cc862">  167</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="debug_8c.html#af11807b9c95c1c4f05aa0cd5a672a560">ec_debug_send</a>(</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg, </div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <span class="keyword">const</span> uint8_t *data, </div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <span class="keywordtype">size_t</span> size </div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        )</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keyword">struct </span>sk_buff *skb;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordflow">if</span> (!dbg-&gt;<a class="code" href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">opened</a>)</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="comment">// allocate socket buffer</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordflow">if</span> (!(skb = dev_alloc_skb(size))) {</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>.rx_dropped++;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    }</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// copy frame contents into socket buffer</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    memcpy(skb_put(skb, size), data, size);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="comment">// update device statistics</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>.rx_packets++;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>.rx_bytes += size;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="comment">// pass socket buffer to network stack</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    skb-&gt;dev = dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    skb-&gt;protocol = eth_type_trans(skb, dbg-&gt;<a class="code" href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">dev</a>);</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    skb-&gt;ip_summed = CHECKSUM_UNNECESSARY;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    netif_rx(skb);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;}</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="comment">/******************************************************************************</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="comment"> *  NET_DEVICE functions</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="debug_8c.html#a11a1c64e15248046846431990839c0f4">  206</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a11a1c64e15248046846431990839c0f4">ec_dbgdev_open</a>(</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="keyword">struct</span> net_device *dev </div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        )</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;{</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg = *((<a class="code" href="structec__debug__t.html">ec_debug_t</a> **) netdev_priv(dev));</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">opened</a> = 1;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <a class="code" href="master_8h.html#a306a2bcfad973302ae507c9c6978b816">EC_MASTER_INFO</a>(dbg-&gt;<a class="code" href="structec__debug__t.html#ab18ba1d3de75e73ab1d89315240b615d">device</a>-&gt;<a class="code" href="structec__device.html#a3678edcc317d6324936b02c4509de443">master</a>, <span class="stringliteral">&quot;Debug interface %s opened.\n&quot;</span>,</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;            dev-&gt;name);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">  223</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">ec_dbgdev_stop</a>(</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keyword">struct</span> net_device *dev </div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        )</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;{</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg = *((<a class="code" href="structec__debug__t.html">ec_debug_t</a> **) netdev_priv(dev));</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">opened</a> = 0;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="master_8h.html#a306a2bcfad973302ae507c9c6978b816">EC_MASTER_INFO</a>(dbg-&gt;<a class="code" href="structec__debug__t.html#ab18ba1d3de75e73ab1d89315240b615d">device</a>-&gt;<a class="code" href="structec__device.html#a3678edcc317d6324936b02c4509de443">master</a>, <span class="stringliteral">&quot;Debug interface %s stopped.\n&quot;</span>,</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            dev-&gt;name);</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;}</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">  240</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">ec_dbgdev_tx</a>(</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <span class="keyword">struct</span> sk_buff *skb, </div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="keyword">struct</span> net_device *dev </div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        )</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg = *((<a class="code" href="structec__debug__t.html">ec_debug_t</a> **) netdev_priv(dev));</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    dev_kfree_skb(skb);</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>.tx_dropped++;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">  258</a></span>&#160;<span class="keyword">struct </span>net_device_stats *<a class="code" href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">ec_dbgdev_stats</a>(</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        <span class="keyword">struct</span> net_device *dev </div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        )</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="structec__debug__t.html">ec_debug_t</a> *dbg = *((<a class="code" href="structec__debug__t.html">ec_debug_t</a> **) netdev_priv(dev));</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <span class="keywordflow">return</span> &amp;dbg-&gt;<a class="code" href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">stats</a>;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;}</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="ttc" id="debug_8c_html_a1711152b73dc97bc81a9e9aae4b8a263"><div class="ttname"><a href="debug_8c.html#a1711152b73dc97bc81a9e9aae4b8a263">ec_debug_clear</a></div><div class="ttdeci">void ec_debug_clear(ec_debug_t *dbg)</div><div class="ttdoc">Debug interface destructor. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00115">debug.c:115</a></div></div>
<div class="ttc" id="debug_8h_html"><div class="ttname"><a href="debug_8h.html">debug.h</a></div><div class="ttdoc">Network interface for debugging purposes. </div></div>
<div class="ttc" id="structec__debug__t_html_afcecd6a1efb040b7b9740d6c0c48f497"><div class="ttname"><a href="structec__debug__t.html#afcecd6a1efb040b7b9740d6c0c48f497">ec_debug_t::registered</a></div><div class="ttdeci">uint8_t registered</div><div class="ttdoc">net_device is opened </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00051">debug.h:51</a></div></div>
<div class="ttc" id="debug_8c_html_a753de72c1a12d2dda7fd2817ce8784cc"><div class="ttname"><a href="debug_8c.html#a753de72c1a12d2dda7fd2817ce8784cc">ec_dbgdev_tx</a></div><div class="ttdeci">int ec_dbgdev_tx(struct sk_buff *, struct net_device *)</div><div class="ttdoc">Transmits data via the virtual network device. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00240">debug.c:240</a></div></div>
<div class="ttc" id="structec__debug__t_html"><div class="ttname"><a href="structec__debug__t.html">ec_debug_t</a></div><div class="ttdoc">Debugging network interface. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00046">debug.h:46</a></div></div>
<div class="ttc" id="globals_8h_html"><div class="ttname"><a href="globals_8h.html">globals.h</a></div><div class="ttdoc">Global definitions and macros. </div></div>
<div class="ttc" id="master_8h_html"><div class="ttname"><a href="master_8h.html">master.h</a></div><div class="ttdoc">EtherCAT master structure. </div></div>
<div class="ttc" id="debug_8c_html_a488b3c97e9786a33f2372180de561591"><div class="ttname"><a href="debug_8c.html#a488b3c97e9786a33f2372180de561591">ec_debug_unregister</a></div><div class="ttdeci">void ec_debug_unregister(ec_debug_t *dbg)</div><div class="ttdoc">Unregister debug interface. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00152">debug.c:152</a></div></div>
<div class="ttc" id="structec__device_html"><div class="ttname"><a href="structec__device.html">ec_device</a></div><div class="ttdoc">EtherCAT device. </div><div class="ttdef"><b>Definition:</b> <a href="device_8h_source.html#l00081">device.h:81</a></div></div>
<div class="ttc" id="structec__debug__t_html_a9c741cbedd076599ac719146bb3bdc7d"><div class="ttname"><a href="structec__debug__t.html#a9c741cbedd076599ac719146bb3bdc7d">ec_debug_t::dev</a></div><div class="ttdeci">struct net_device * dev</div><div class="ttdoc">net_device for virtual ethernet device </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00049">debug.h:49</a></div></div>
<div class="ttc" id="master_8h_html_af75617c47fe87f4f60e8593d7e79dbc0"><div class="ttname"><a href="master_8h.html#af75617c47fe87f4f60e8593d7e79dbc0">EC_MASTER_WARN</a></div><div class="ttdeci">#define EC_MASTER_WARN(master, fmt, args...)</div><div class="ttdoc">Convenience macro for printing master-specific warnings to syslog. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00097">master.h:97</a></div></div>
<div class="ttc" id="structec__device_html_a3678edcc317d6324936b02c4509de443"><div class="ttname"><a href="structec__device.html#a3678edcc317d6324936b02c4509de443">ec_device::master</a></div><div class="ttdeci">ec_master_t * master</div><div class="ttdoc">EtherCAT master. </div><div class="ttdef"><b>Definition:</b> <a href="device_8h_source.html#l00083">device.h:83</a></div></div>
<div class="ttc" id="master_8h_html_aece1fb7ea6af168ba7513c9d7b0a523a"><div class="ttname"><a href="master_8h.html#aece1fb7ea6af168ba7513c9d7b0a523a">EC_MASTER_ERR</a></div><div class="ttdeci">#define EC_MASTER_ERR(master, fmt, args...)</div><div class="ttdoc">Convenience macro for printing master-specific errors to syslog. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00085">master.h:85</a></div></div>
<div class="ttc" id="debug_8c_html_af11807b9c95c1c4f05aa0cd5a672a560"><div class="ttname"><a href="debug_8c.html#af11807b9c95c1c4f05aa0cd5a672a560">ec_debug_send</a></div><div class="ttdeci">void ec_debug_send(ec_debug_t *dbg, const uint8_t *data, size_t size)</div><div class="ttdoc">Sends frame data to the interface. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00167">debug.c:167</a></div></div>
<div class="ttc" id="debug_8c_html_a683a1dd06041ed934990c736ab3267a9"><div class="ttname"><a href="debug_8c.html#a683a1dd06041ed934990c736ab3267a9">ec_debug_register</a></div><div class="ttdeci">void ec_debug_register(ec_debug_t *dbg, const struct net_device *net_dev)</div><div class="ttdoc">Register debug interface. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00127">debug.c:127</a></div></div>
<div class="ttc" id="debug_8c_html_ab4a40ce6bb6a66bd034790c3a7985c80"><div class="ttname"><a href="debug_8c.html#ab4a40ce6bb6a66bd034790c3a7985c80">ec_debug_init</a></div><div class="ttdeci">int ec_debug_init(ec_debug_t *dbg, ec_device_t *device, const char *name)</div><div class="ttdoc">Debug interface constructor. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00074">debug.c:74</a></div></div>
<div class="ttc" id="debug_8c_html_a59052897d8dbe64aba431cc31ba628a9"><div class="ttname"><a href="debug_8c.html#a59052897d8dbe64aba431cc31ba628a9">ec_dbgdev_stop</a></div><div class="ttdeci">int ec_dbgdev_stop(struct net_device *)</div><div class="ttdoc">Stops the virtual network device. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00223">debug.c:223</a></div></div>
<div class="ttc" id="debug_8c_html_ab8061a6af8b6ec3067b2c171fbae47bf"><div class="ttname"><a href="debug_8c.html#ab8061a6af8b6ec3067b2c171fbae47bf">ec_dbgdev_stats</a></div><div class="ttdeci">struct net_device_stats * ec_dbgdev_stats(struct net_device *)</div><div class="ttdoc">Gets statistics about the virtual network device. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00258">debug.c:258</a></div></div>
<div class="ttc" id="debug_8c_html_a11a1c64e15248046846431990839c0f4"><div class="ttname"><a href="debug_8c.html#a11a1c64e15248046846431990839c0f4">ec_dbgdev_open</a></div><div class="ttdeci">int ec_dbgdev_open(struct net_device *)</div><div class="ttdoc">Opens the virtual network device. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00206">debug.c:206</a></div></div>
<div class="ttc" id="debug_8c_html_a1049a945f6a46b9a8a8ab4684958d59f"><div class="ttname"><a href="debug_8c.html#a1049a945f6a46b9a8a8ab4684958d59f">ec_dbg_netdev_ops</a></div><div class="ttdeci">static const struct net_device_ops ec_dbg_netdev_ops</div><div class="ttdoc">Device operations for debug interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8c_source.html#l00056">debug.c:56</a></div></div>
<div class="ttc" id="structec__debug__t_html_ab18ba1d3de75e73ab1d89315240b615d"><div class="ttname"><a href="structec__debug__t.html#ab18ba1d3de75e73ab1d89315240b615d">ec_debug_t::device</a></div><div class="ttdeci">ec_device_t * device</div><div class="ttdoc">Parent device. </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00048">debug.h:48</a></div></div>
<div class="ttc" id="structec__debug__t_html_ac4b768dfed6808c7c0ced1de2a22aba1"><div class="ttname"><a href="structec__debug__t.html#ac4b768dfed6808c7c0ced1de2a22aba1">ec_debug_t::opened</a></div><div class="ttdeci">uint8_t opened</div><div class="ttdoc">net_device is opened </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00052">debug.h:52</a></div></div>
<div class="ttc" id="master_8h_html_a306a2bcfad973302ae507c9c6978b816"><div class="ttname"><a href="master_8h.html#a306a2bcfad973302ae507c9c6978b816">EC_MASTER_INFO</a></div><div class="ttdeci">#define EC_MASTER_INFO(master, fmt, args...)</div><div class="ttdoc">Convenience macro for printing master-specific information to syslog. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00073">master.h:73</a></div></div>
<div class="ttc" id="structec__debug__t_html_af6b70564444854f7f362fe5902e9dc34"><div class="ttname"><a href="structec__debug__t.html#af6b70564444854f7f362fe5902e9dc34">ec_debug_t::stats</a></div><div class="ttdeci">struct net_device_stats stats</div><div class="ttdoc">device statistics </div><div class="ttdef"><b>Definition:</b> <a href="debug_8h_source.html#l00050">debug.h:50</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_c1346cf4828efdd0d2baf0d391d01b77.html">master</a></li><li class="navelem"><a class="el" href="debug_8c.html">debug.c</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
